// 1. 创建一个store对象
// 引入createStore方法
import { createStore } from 'redux'
// {type: 'INCREMENT'}
// {type: 'DECREMENT'}
// const store = createStore(function (state, action) {
//   switch (action.type) {

//     case 'INCREMENT':
//         ... 对数据具体操作 (递增)
//         return 计算后的结果
//     case 'DECREMENT':
//         ...对数据进行操作(递减)
//         return 计算后的结果
//     default:
//         return state
//   }
// })
const initState = { count: 0, msg: 'hello redux' }
// reducer函数,再创建store时,会被调用一次,这次的目的就是为了初始化redux中的数据
// 当调用store.dispatch(需求对象) reducer会被调用.目的是为了修改数据
const store = createStore(function (state = initState, action) {
  console.log('创建store对象的时候,reducer会被调用一次', state, action)
  switch (action.type) {
    case 'INCREMENT':
      const result = state.count + 1
      return {
        ...state,
        count: result,
      }
    case 'DECREMENT':
      const res = state.count - 1

      return {
        ...state,
        count: res,
      }

    // reducer中要求必须写default的目的,也是为了初始化数据
    default:
      return state
  }
})

//查看store中存储的数据

// 当redux的数据发生变化的时候,回调函数执行
store.subscribe(() => {
  console.log('监听到数据变化了', store.getState())
})

// 修改数据
store.dispatch({ type: 'INCREMENT' })
store.dispatch({ type: 'INCREMENT' })
store.dispatch({ type: 'INCREMENT' })
store.dispatch({ type: 'INCREMENT' })

// console.log(store.getState())

store.dispatch({ type: 'DECREMENT' })

// console.log(store.getState())
